package com.yunchang.open.iploaction.parser;

import com.yunchang.open.iploaction.Location;
import com.yunchang.open.iploaction.analyzer.LocationAnalyzer;

import java.io.InputStream;

/**
 * IPv4归属地解析器。
 * Created by jasontujun on 2019/6/24.
 */
public interface IPv4Parser {

    /**
     * 默认优先级的值为100，作为优先级的参考值。
     */
    int DEFAULT_PRIORITY = 100;

    /**
     * 初始化。导入IP地址库。
     *
     * @param inputStream IP地址库
     */
    IPv4Parser init(InputStream inputStream) throws Exception;

    /**
     * 获取优先级。
     * 优先级越大，有多个解析器时就会优先调用优先级大的解析器；优先级也会影响解析结果打分
     *
     * @return 返回解析
     * @see #DEFAULT_PRIORITY
     * @see LocationAnalyzer#score(String, IPv4Parser, Location)
     */
    int getPriority();

    /**
     * 通过ip地址（ipv4）查询归属地
     *
     * @param ipv4 ip地址（ipv4）
     * @return 返回归属地
     */
    Location findIpv4Location(String ipv4);
}
